package com.jsb.laundry.service;

import com.jsb.laundry.model.dto.ViewOrderDetailsVoRequest;
import com.jsb.laundry.model.entity.*;
import com.jsb.laundry.model.vo.DeliveryOrderInformationVo;
import com.jsb.laundry.model.vo.OrderDetailsVo;
import com.jsb.laundry.model.vo.OrderListVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface OrderInfoService {
    /**
     * 骑手抢单列表
     *
     * @return
     */
    List<OrderListVo> findByUserInfoList();

    /**
     * 查询订单方向
     *
     * @param order
     * @return
     */
    int findByOrderDirection(String order);

    /**
     * 送货订单信息
     *
     * @param orderId
     * @return
     */
    DeliveryOrderInformationVo findByOrderInfo(String orderId);

    /**
     * 更改订单状态为已接单
     *
     * @param orderId
     * @return
     */
    int updateOrderStatus(String orderId);

    /**
     * 查询实际订单金额
     *
     * @param orderId
     * @return
     */
    int findByPaidPrice(String orderId);

    /**
     * 查询骑手抢单后的订单信息
     *
     * @param riderId
     * @param orderStatus
     * @return
     */
    List<OrderListVo> afterTheRiderSnatchedTheOrderInfo(String riderId, String orderStatus, String orderDirection);

    /**
     * 查询瑕疵
     *
     * @param type
     * @return
     */
    List<Flaw> findByFlaw(String keyword, String type);

    /**
     * 查询瑕疵分类
     *
     * @return
     */
    List<Flaw> findByFlawType();

    /**
     * 查询配饰
     *
     * @return
     */
    List<Accessories> findByAccessories(String keyword);

    /**
     * 查询品牌
     *
     * @return
     */
    List<Brand> findByBrand(String keyword);

    /**
     * 查询效果
     *
     * @return
     */
    List<Effect> findByEffect(String keyword);

    /**
     * 查询颜色
     *
     * @return
     */
    List<Colour> findByColour(String keyword);

    /**
     * 查询用户是否在线
     *
     * @param userId
     * @return
     */
    String findByUserLogin(String userId);

    /**
     * 取货
     *
     * @param orderStatus
     * @param orderId
     * @return
     */
    int pickUp(String orderStatus, String orderId);
    int updfactoryStatus(String orderId);
    int updorderStatus(String orderStatus,String orderId);
    /**
     * 根据订单号查询子订单列表
     *
     * @param orderId
     * @return
     */
    List<OrderDetailsVo> findBySybOrderIdList(String orderId);


    /**
     * 更新子订单详情
     *
     * @param viewOrderDetailsVoRequest
     * @return
     */
    Integer updateSubDetails(List<ViewOrderDetailsVoRequest> viewOrderDetailsVoRequest);

    /**
     * 查询订单是否为当前骑手抢的
     *
     * @param orderId
     * @param userId
     * @return
     */
    String findByOrderInfoTc(String orderId, String userId);

    /**
     * 查看已交接
     *
     * @param riderId
     * @return
     */
    List<OrderListVo> viewHandover(String riderId);

    /**
     * 根据用户订单号查询手机号
     *
     * @param orderId
     * @return
     */
    String findByUserPhone(String orderId);

    /**
     * 完成订单信息
     *
     * @param riderId
     * @return
     */
    List<OrderListVo> okOrderInfo(String riderId);

    /**
     * 根据用户订单号查询手机号
     *
     * @param orderId
     * @return
     */
    String findByUserPhoneBack(String orderId);

    /**
     * 查询订单状态
     *
     * @param orderId
     * @return
     */
    String findByOrderStatus(String orderId);

    /**
     * 根据订单号查询商品数量
     *
     * @param orderId
     * @return
     */
    int findByOrderNum(String orderId);

    /**
     * 重复抢单
     *
     * @param orderId
     * @param direction
     * @return
     */
    int repeat(String orderId, String direction);

    /**
     * 查询抢单用户id
     *
     * @param orderId
     * @return
     */
    String findByRiderInfoId(String orderId);

    String findByRiderInfoId1(String orderId);

    int updateDeliveryStatus(String orderId, String deliveryStatus);
}
